#ifndef __ARRAY_STACK_H__
#define __ARRAY_STACK_H__

typedef struct astack_t {
    void *base;
    int capacity;
    int top;
    int size;
} astack_t;

int astack_init(astack_t **s, int capacity, int size);

int astack_empty(astack_t *s);

int astack_full(astack_t *s);

int astack_push(astack_t *s, const void *data);

int astack_pop(astack_t *s, void *elem);

void astack_destroy(astack_t **s);

#endif
